"""
此模块定义了产品页面的页面对象类，封装了产品添加相关的操作。
"""
from playwright.sync_api import Page

from pages.base_page import BasePage


class ProductPage(BasePage):
    """
    产品页面的页面对象类，封装了在产品页面进行添加产品操作的方法。
    """
    def add_product(self):
        """
        执行添加产品的操作，包括填写表单和点击按钮。
        """
        # 点击新增按钮
        self.page.get_by_role("button", name="新 增").click()
        # 选择分组
        self.page.get_by_role("combobox", name="* 选择分组").click()
        self.page.get_by_title("分销产品").click()
        # 选择产品来源
        self.page.get_by_role("combobox", name="* 产品来源").click()
        self.page.get_by_title("其他").locator("div").click()
        # 选择险种类型
        self.page.get_by_role("combobox", name="* 险种类型").click()
        self.page.get_by_title("医疗险").locator("div").click()
        # 填写产品链接
        self.page.get_by_role("textbox", name="* 产品链接").click()
        self.page.get_by_role("textbox", name="* 产品链接").fill("http://www.baidu.com?empNo={empNo}")
        # 选择产品名称
        self.page.get_by_role("combobox", name="* 产品名称").click()
        self.page.get_by_role("combobox", name="* 产品名称").fill("EA60")
        self.page.get_by_text("众安健康险 / 尊享e生2024版（月缴版）(EA60)").click()
        # 填写产品描述
        self.page.get_by_role("textbox", name="* 产品描述").click()
        self.page.get_by_role("textbox", name="* 产品描述").fill("产品描述")
        # 填写外显产品名称
        self.page.get_by_role("textbox", name="* 外显产品名称").click()
        self.page.get_by_role("textbox", name="* 外显产品名称").fill("外显名称")
        # 填写犹退期
        self.page.get_by_role("spinbutton", name="* 犹退期").click()
        self.page.get_by_role("spinbutton", name="* 犹退期").fill("1")
        # 切换首页人气推荐开关
        self.page.get_by_role("switch", name="* 首页人气推荐").click()
        # 填写备注
        self.page.get_by_role("textbox", name="备注").click()
        self.page.get_by_role("textbox", name="备注").fill("产品备注")
        # 点击确定按钮
        self.page.get_by_role("button", name="确 定").click()
